FIG. 1 is a simplified block diagram of an architecture of a personal computer comprising a host 1, a CD ROM 2, a disk drive 3, a printer 4, and three host adapter cards 5-7. Host 1 comprises a CPU 8, a main memory 9 containing software for the CPU, a local bus 10 interconnecting the CPU and the main memory, a bridge 11, an ISA bus 12, and three card edge connectors 13-15. The card edge connectors 13-15 are designated "slots" in the figure. Host 1 also comprises a decoder 16 which outputs three address enable signals 17-19, one to each of the host adapter cards 5-7. A host adapter integrated circuit is disposed on each host adapter card.
The three host adapter cards 5-7 have different features and capabilities. Host adapter card 5 provides an interface for a single ended 8-bit SCSI bus for communication with CD ROM 2, host adapter card 6 provides an interface for a single ended 16-bit SCSI bus for communication with disk drive 3, and host adapter card 7 provides an interface for a differential 8-bit SCSI bus for communication with printer 4. The host adapter card 7 interfacing with printer 4 may have a relatively small buffer which is written by CPU 8 with data to be printed whereas host adapter card 6 may have a relatively large buffer which stores data to be read from disk 3 as well as data to be written to disk 3. A driver program residing in main memory 9 must therefore be able to determine the different interfacing requirements of the various cards in slots 13-15 so that the host can correctly interface to those different cards.
Not only must the driver software be able to determine the interfacing requirements of the different cards plugged into the slots 13-15, but it is desired to realize the different host adapter cards using one host adapter integrated circuit layout. If, for example, a single manufacturer produces two types of cards 5 and 6, the manufacturer can realize considerable cost savings associated with producing two different integrated circuits if the same integrated circuit layout is used on both types of cards.
Accordingly, host adapter cards 5 and 6 use the same type of host adapter integrated circuit. Because the host adapter integrated circuits are identical at the silicon level, the driver software cannot read different configuration data from a hardwired register located at a predetermined address inside the integrated circuits. The hardwired contents of such registers would be identical. An additional external register is therefore provided which can be read by the driver software.
Host adapter card 5, for example, comprises a host adapter integrated circuit 20 and an external register 21 coupled to slot 13. Similarly, host adapter card 6, for example, comprises a host adapter integrated circuit 22 and an external register 23 coupled to slot 14. The driver program in main memory 9 reads register 21 from a predetermined and fixed address (using address enable signal 17) and determines from the contents of register 21 information on the requirements for interfacing with card 5. Similarly, the driver reads register 23 from another predetermined address (using address enable signal 20) and determines from the contents of register 23 information on the requirements for interfacing with card 6. Host adapter integrated circuits 20 and 22 therefore can be identical integrated circuits.
If the bus which couples the host 1 to the adapter cards 5-7 is now upgraded from an ISA bus to a PCI bus, a problem arises. The PCI bus specification does not generally permit more than one load to be present on a terminal of a slot. In card 5, there are two loads on a terminal of slot 13, one load for the register 21 which is also coupled to slot 13, and a second load for the host adapter integrated circuit 20 which is coupled to slot 13. A different scheme is therefore required for supplying configuration information to the driver program when a PCI bus is used.
A second scheme is illustrated in connection with host adapter card 7 and host adapter integrated circuit 24. Host adapter integrated circuit 24 has a plurality of terminals 25, each which is soldered to Vcc or ground on the printed circuit board. The driver program reads a register at a predetermined address in host adapter integrated circuit 24 (using the address enable signal 19) and obtains therefrom configuration information determined by the setting of the terminals 25. If there are four such terminals, then there is a total of sixteen possible different configurations that can be selected. To increase the number of configurations supportable by the host adapter integrated circuit 24 using this scheme, more terminals must be provided on the integrated circuit package thereby incurring additional costs and space associated with providing more terminals.
A scheme of providing different configuration information from two different host adapter cards having identical host adapter integrated circuits is therefore desired which overcomes problems associated with existing schemes.